home *** CD-ROM | disk | FTP | other *** search
- /* Written by Darcy Brockbank.
- // Copyright (c) 1995 by Darcy Brockbank. All rights reserved.
- //
- // This notice may not be removed from this source code.
- //
- // This object is included in the MiscKit by permission from the author
- // and its use is governed by the MiscKit license, found in the file
- // "LICENSE.rtf" in the MiscKit distribution. Please refer to that file
- // for a list of all applicable permissions and restrictions.
- */
-
- #include "cpu.h"
-
- /*
- * I am so ashamed, but I had to rewrite it in order to keep it
- * portable and free. What a gross mess.
- */
-
- int
- cpu_type(const char *string)
- {
- int i;
- if (!string) return CPU_TYPE_ANY;
- for(i=CPU_TYPE_UNKNOWN;cpus[i];i++){
- if (strcmp(cpus[i],string)==0){
- return i-1;
- }
- }
- return CPU_TYPE_UNKNOWN;
- }
-
- const char *
- arch_from_type(int type)
- {
- return (type>=CPU_TYPE_MAX || type<CPU_TYPE_ANY) ?
- cpus[CPU_TYPE_UNKNOWN] : cpus[type+1];
- }
-
- static const char *
- get_any(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_MULTIPLE:
- return "CPU_SUBTYPE_MULTIPLE";
- case CPU_SUBTYPE_LITTLE_ENDIAN:
- return "CPU_SUBTYPE_LITTLE_ENDIAN";
- case CPU_SUBTYPE_BIG_ENDIAN:
- return "CPU_SUBTYPE_BIG_ENDIAN";
- }
- }
-
-
- static const char *
- get_vax(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_VAX_ALL:
- return("CPU_SUBTYPE_VAX_ALL");
- case CPU_SUBTYPE_VAX780:
- return("CPU_SUBTYPE_VAX780");
- case CPU_SUBTYPE_VAX785:
- return("CPU_SUBTYPE_VAX785");
- case CPU_SUBTYPE_VAX750:
- return("CPU_SUBTYPE_VAX750");
- case CPU_SUBTYPE_VAX730:
- return("CPU_SUBTYPE_VAX730");
- case CPU_SUBTYPE_UVAXI:
- return("CPU_SUBTYPE_UVAXI");
- case CPU_SUBTYPE_UVAXII:
- return("CPU_SUBTYPE_UVAXII");
- case CPU_SUBTYPE_VAX8200:
- return("CPU_SUBTYPE_VAX8200");
- case CPU_SUBTYPE_VAX8500:
- return("CPU_SUBTYPE_VAX8500");
- case CPU_SUBTYPE_VAX8600:
- return("CPU_SUBTYPE_VAX8600");
- case CPU_SUBTYPE_VAX8650:
- return("CPU_SUBTYPE_VAX8650");
- case CPU_SUBTYPE_VAX8800:
- return("CPU_SUBTYPE_VAX8800");
- case CPU_SUBTYPE_UVAXIII:
- return("CPU_SUBTYPE_UVAXIII");
- }
- }
-
- static const char *
- get_romp(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_RT_ALL:
- return("CPU_SUBTYPE_RT_ALL");
- case CPU_SUBTYPE_RT_PC:
- return("CPU_SUBTYPE_RT_PC");
- case CPU_SUBTYPE_RT_APC:
- return("CPU_SUBTYPE_RT_APC");
- case CPU_SUBTYPE_RT_135:
- return("CPU_SUBTYPE_RT_135");
- }
- }
-
- static const char *
- get_mmax(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_MMAX_ALL:
- return("CPU_SUBTYPE_MMAX_ALL");
- case CPU_SUBTYPE_MMAX_JPC:
- return("CPU_SUBTYPE_MMAX_JPC");
- /* case CPU_SUBTYPE_MMAX_DPC: */
- /* return("CPU_SUBTYPE_MMAX_DPC");*/
- case CPU_SUBTYPE_SQT:
- return("CPU_SUBTYPE_SQT");
- case CPU_SUBTYPE_MMAX_APC_FPU:
- return("CPU_SUBTYPE_MMAX_APC_FPU");
- case CPU_SUBTYPE_MMAX_APC_FPA:
- return("CPU_SUBTYPE_MMAX_APC_FPA");
- case CPU_SUBTYPE_MMAX_XPC:
- return("CPU_SUBTYPE_MMAX_XPC");
- }
- }
-
- static const char *
- get_intel(int t)
- {
- switch(t){
- default:
- /* case CPU_SUBTYPE_386: */
- case CPU_SUBTYPE_I386_ALL:
- return("CPU_SUBTYPE_I386_ALL");
- return("CPU_SUBTYPE_386");
- case CPU_SUBTYPE_486:
- return("CPU_SUBTYPE_486");
- case CPU_SUBTYPE_486SX:
- return("CPU_SUBTYPE_486SX");
- case CPU_SUBTYPE_586:
- return("CPU_SUBTYPE_586");
- case CPU_SUBTYPE_586SX:
- return("CPU_SUBTYPE_586SX");
- }
- }
-
- static const char *
- get_mips(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_MIPS_ALL:
- return("CPU_SUBTYPE_MIPS_ALL");
- case CPU_SUBTYPE_MIPS_R2300:
- return("CPU_SUBTYPE_MIPS_R2300");
- case CPU_SUBTYPE_MIPS_R2600:
- return("CPU_SUBTYPE_MIPS_R2600");
- case CPU_SUBTYPE_MIPS_R2800:
- return("CPU_SUBTYPE_MIPS_R2800");
- case CPU_SUBTYPE_MIPS_R2000a:
- return("CPU_SUBTYPE_MIPS_R2000a");
- }
- }
-
- static const char *
- get_m68k(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_MC680x0_ALL:
- return("CPU_SUBTYPE_MC680x0_ALL ");
- /* case CPU_SUBTYPE_MC68030: */
- /* return("CPU_SUBTYPE_MC68030");*/
- case CPU_SUBTYPE_MC68040:
- return("CPU_SUBTYPE_MC68040");
- case CPU_SUBTYPE_MC68030_ONLY:
- return("CPU_SUBTYPE_MC68030_ONLY");
- }
- }
-
- static const char *
- get_hppa(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_HPPA_ALL:
- /* case CPU_SUBTYPE_HPPA_7100: */
- return("CPU_SUBTYPE_HPPA_ALL");
- return("CPU_SUBTYPE_HPPA_7100");
- case CPU_SUBTYPE_HPPA_7100LC:
- return("CPU_SUBTYPE_HPPA_7100LC");
- }
- }
-
- static const char *
- get_arm(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_ARM_ALL:
- return("CPU_SUBTYPE_ARM_ALL");
- case CPU_SUBTYPE_ARM_A500_ARCH:
- return("CPU_SUBTYPE_ARM_A500_ARCH");
- case CPU_SUBTYPE_ARM_A500:
- return("CPU_SUBTYPE_ARM_A500");
- case CPU_SUBTYPE_ARM_A440:
- return("CPU_SUBTYPE_ARM_A440");
- case CPU_SUBTYPE_ARM_M4:
- return("CPU_SUBTYPE_ARM_M4");
- case CPU_SUBTYPE_ARM_A680:
- return("CPU_SUBTYPE_ARM_A680");
- }
- }
-
- static const char *
- get_m88k(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_MC88000_ALL:
- return("CPU_SUBTYPE_MC88000_ALL");
- case CPU_SUBTYPE_MC88100:
- return("CPU_SUBTYPE_MC88100");
- case CPU_SUBTYPE_MC88110:
- return("CPU_SUBTYPE_MC88110");
- }
- }
-
- static const char *
- get_ppc(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_MC98000_ALL:
- return("CPU_SUBTYPE_MC98000_ALL");
- case CPU_SUBTYPE_MC98601:
- return("CPU_SUBTYPE_MC98601");
- }
- }
-
- static const char *
- get_i860(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_I860_ALL:
- return("CPU_SUBTYPE_I860_ALL");
- case CPU_SUBTYPE_I860_860:
- return("CPU_SUBTYPE_I860_860");
- }
- }
-
- static const char *
- get_i680(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_I860_LITTLE_ALL:
- return("CPU_SUBTYPE_I860_LITTLE_ALL");
- case CPU_SUBTYPE_I860_LITTLE:
- return("CPU_SUBTYPE_I860_LITTLE");
- }
- }
-
- static const char *
- get_sparc(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_SPARC_ALL:
- return("CPU_SUBTYPE_SPARC_ALL");
- }
- }
-
-
- static const char *
- get_rs6k(int t)
- {
- switch(t){
- default:
- case CPU_SUBTYPE_RS6000_ALL:
- return("CPU_SUBTYPE_RS6000_ALL");
- case CPU_SUBTYPE_RS6000:
- return("CPU_SUBTYPE_RS6000");
- }
- }
-
-
- const char *
- get_cpusubtype(int cputype, int t)
- {
- switch(cputype){
- case CPU_TYPE_ANY:
- return get_any(t);
- case CPU_TYPE_VAX:
- return get_vax(t);
- case CPU_TYPE_ROMP:
- return get_romp(t);
- case CPU_TYPE_NS32032:
- return get_mmax(t);
- case CPU_TYPE_NS32332:
- return get_mmax(t);
- case CPU_TYPE_MC680x0:
- return get_m68k(t);
- case CPU_TYPE_I386:
- return get_intel(t);
- case CPU_TYPE_MIPS:
- return get_mips(t);
- case CPU_TYPE_NS32532:
- return get_mmax(t);
- case CPU_TYPE_HPPA:
- return get_hppa(t);
- case CPU_TYPE_ARM:
- return get_arm(t);
- case CPU_TYPE_MC88000:
- return get_m88k(t);
- case CPU_TYPE_SPARC:
- return get_sparc(t);
- case CPU_TYPE_I860:
- return get_i860(t);
- case CPU_TYPE_I860_LITTLE:
- return get_i680(t);
- case CPU_TYPE_RS6000:
- return get_rs6k(t);
- case CPU_TYPE_MC98000:
- return get_ppc(t);
- default:
- return "unknown";
- }
- }
-
- const char *
- get_cputype(int type)
- {
- switch(type){
- case CPU_TYPE_ANY:
- return "CPU_TYPE_ANY";
- case CPU_TYPE_VAX:
- return "CPU_TYPE_VAX";
- case CPU_TYPE_ROMP:
- return "CPU_TYPE_ROMP";
- case CPU_TYPE_NS32032:
- return "CPU_TYPE_NS32032";
- case CPU_TYPE_NS32332:
- return "CPU_TYPE_NS32332";
- case CPU_TYPE_MC680x0:
- return "CPU_TYPE_MC680x0";
- case CPU_TYPE_I386:
- return "CPU_TYPE_I386";
- case CPU_TYPE_MIPS:
- return "CPU_TYPE_MIPS";
- case CPU_TYPE_NS32532:
- return "CPU_TYPE_MMAX";
- case CPU_TYPE_HPPA:
- return "CPU_TYPE_HPPA";
- case CPU_TYPE_ARM:
- return "CPU_TYPE_ARM";
- case CPU_TYPE_MC88000:
- return "CPU_TYPE_MC88000";
- case CPU_TYPE_SPARC:
- return "CPU_TYPE_SPARC";
- case CPU_TYPE_I860:
- return "CPU_TYPE_I860";
- case CPU_TYPE_I860_LITTLE:
- return "CPU_TYPE_I860_LITTLE";
- case CPU_TYPE_RS6000:
- return "CPU_TYPE_RS6000";
- case CPU_TYPE_MC98000:
- return "CPU_TYPE_MC98000";
- default:
- return "CPU_TYPE_unknown";
- }
- }
-
-